/*
  准备一个 HashMap 集合，统计字符串"123,456,789,123,456"中每个数字字符串出现的次数并打印出来。

   如：

          123 出现了 2 次

          456 出现了 2 次

          789 出现了 1 次
 */

package com.syxbyi._2hashmap;

import java.util.HashMap;
import java.util.Map;

public class HashMapCounter {
    final String str = "123,456,789,123,456";
    Map<String, Integer> hashMap = new HashMap<>();

    HashMapCounter() {
        hashMap.put("123", 0);
        hashMap.put("456", 0);
        hashMap.put("789", 0);
        for (String k : hashMap.keySet()) {
            int count = 0;
            int from = 0;
            // from = str.indexOf(k, from) 很关键，否则会多统计很多key
            while ((from = str.indexOf(k, from)) != -1) {
                count++;
                from += k.length();
            }
            hashMap.replace(k, count);
        }
    }

    public void print() {
        for (String k : hashMap.keySet()) {
            System.out.printf("%s出现了%d次\n", k, hashMap.get(k));
        }
    }

    public static void main(String[] args) {
        HashMapCounter h = new HashMapCounter();
        h.print();
    }
}
